package com.tedu.API.thread;

/**
 * setPriority()   设置线程优先级---决定执行那个线程
 * 单线程：创建一个线程做一件事
 * 多线程：创建多个线程做不同的事情
 * 线程优先级范围：1~10   数值越大被执行几率越大
 *
 * 案例：创建三个线程，分别指定三个线程优先级 max 10
 *                                     1000次：老大一声吼，地球抖三抖
 *                                     normal 5
 *                                     1000次：老二一出手，蚊子全飞走
 *                                     min 1
 *                                     1000次：老三一张口，笑倒一头牛
 *     使用Lambda完成三个线程创建【多线程】
 *
 * 总结：创建多条线程【多线程】“同时”并发运行时，不能主动获取CPU时间片
 *      也不能决定时间片长度，只能被动分配！
 *      如果调整优先级，按照优先级数值大小，确定是否加大获取CPU时间片
 *      几率！
 */
public class Thread_Priority {
    public static void main(String[] args) {
        Thread max=new Thread(()->{
                for(int i=0;i<1000;i++){
                    System.out.println("老大一声吼，地球抖三抖");
                }
        });
        Thread normal=new Thread(()->{
                for(int i=0;i<1000;i++){
                    System.out.println("老二一出手，蚊子全飞走");
                }
        });
        Thread min=new Thread(()->{
                for(int i=0;i<1000;i++){
                    System.out.println("老三一张口，笑倒一头牛");
                }
        });
        //设置线程优先级：max 10  normal 5  min 1
        max.setPriority(10);
        min.setPriority(Thread.MIN_PRIORITY);  //定死值
        //统一启动
        max.start();
        normal.start();
        min.start();
    }
}
